u`
EeLXgсFp.352uQZq̃I[o[[hv
EQ[JKF^C}[ Ȃ

p.352 QZq̃I[o[[h

EQZq̃I[o[[h͂QŒ`Ηǂ
EF public static ^ operator Zq (^ 1, ^ 2) {c; return l⎮; }
EPZq̃I[o[[h͈Ɠ^Ԃ̂ʓIAQZq̃I[o[[hł͈قȂ^ԂAقȂ^̈w肷邱Ƃ
EFWNX Map A(5, 3), B(4, 8) ŁA A + B ́u9, 11vAA * 2 ́u10, 6vƂł
@܂AA - BWł͂ȂԂƒ`邱Ƃ\

~jKFWNXMapɂQ+Zq̃I[o[[h Map02.cs

EMapNX̓f[^oudouble x, y; //XWYWvƁAftHgRXgN^A
@XYWw肷RXgN^Ƃ
EQ+Zq̃I[o[[hł́AXWYŴꂼ̘aWԂ
E킹āAW̕\sToString\bh̃I[o[[hǉ悤

쐬

//WNXMapɂQ+Zq̃I[o[[h Map02.cs
using System;
class Map {
  double x; //XWp̃f[^o 
  double y; //YWp̃f[^o
  public double X { //XWp̃vpeB
    get { return x; } set { x = value; }
  }
  public double Y { //YWp̃vpeB
    get { return y; } set { y = value; }
  }
  public Map() { //ftHgRXgN^
    x = 0.0;
    y = 0.0;
  }
  public Map(double x, double y) { //XWAYWw肷RXgN^
    this.x = x;
    this.y = y;
  }
  public override string ToString() { //W\p̃I[oCh
      return "(" + x + ", " + y + ")";
  }
  public static Map operator +(Map a, Map b) { //Q+Zq̃I[o[[h
    Map result = new Map(); //ƗpMapIuWFNg𐶐
    result.x = a.x + b.x; //ꂼXW̘ai[
    result.y = a.y + b.y; //ꂼYW̘ai[ 
    return result; //oオIuWFNgԂ
    // return new Map(a.x + b.x, a.y + b.y); ƂƂPsōς
  }
}
class Map02 {
  public static void Main() {
    Map A = new Map(5, 2), B = new Map(-3, 4);
    Console.WriteLine("AF{0}", A);
    Console.WriteLine("BF{0}", B);
    Map C = A + B; //Q+Zq̃I[o[[h
    Console.WriteLine("CF{0}", C);
  }
}

~jKFWNXMapɂQ-ZqAQ*Zq̃I[o[[h Map03.cs

EQ-Zq̃I[o[[h́A2W̋double^ŕԂ
EQ*Zq̃I[o[[h(Map A, int d)ƂāAAXWYWd{ʂ̍WԂ

쐬

//WNXMapɂQ+Zq̃I[o[[h Map02.cs
using System;
class Map {
  double x; //XWp̃f[^o 
  double y; //YWp̃f[^o
  public double X { //XWp̃vpeB
    get { return x; } set { x = value; }
  }
  public double Y { //YWp̃vpeB
    get { return y; } set { y = value; }
  }
  public Map() { //ftHgRXgN^
    x = 0.0;
    y = 0.0;
  }
  public Map(double x, double y) { //XWAYWw肷RXgN^
    this.x = x;
    this.y = y;
  }
  public override string ToString() { //W\p̃I[oCh
      return "(" + x + ", " + y + ")";
  }
  public static double operator -(Map a, Map b) { //ԂQ-Zq̃I[o[[h
    return Math.Sqrt(Math.Pow((a.x - b.x), 2) + Math.Pow((a.y - b.y), 2)); //ŴQ̘a̕
  }
  public static Map operator *(Map a, int n) { //Q*Zq̃I[o[[h
    return new Map(a.x * n, a.y * n); //XW,YWn{WԂ
  }
}
class Map02 {
  public static void Main() {
    Map A = new Map(5, 2), B = new Map(-3, 4);
    Console.WriteLine("AF{0}", A);
    Console.WriteLine("BF{0}", B);
    double d = A - B; //Q-Zq̃I[o[[hŋ𓾂
    Console.WriteLine("{0}", d);
    Map C = A * 3; //Q*Zq̃I[o[[h3{W𓾂
    Console.WriteLine("A~3F{0}", C);
  }
}

p.356iZq̃I[o[[hj

EQ==ZqI[o[[h\ŁAQ̃IuWFNg̔r@`ł
EʏAQ==Zq̃I[o[[hł́ASf[^o̒lΑŜƂēƂ邱Ƃ
EF MAP A(3,2),B(3,2); Ȃ΁uA == BvtrueԂ
E[ƂāAQ==ZqI[o[[hAQ!=ZqI[o[[hKv邪g̓p^[܂Ă
@@ !(A == B) ƁAQ==Zq̃I[o[[hĂ񂾌ʂ𔽓]Ηǂ
E܂AKvłpublic bool Equals(object o)\bh̃I[oChs
@@ ^ȂfalseԂFif(o.GetType() != this.GetType()) return false;
@A Sf[^o̒ltrueAłȂfalseԂ
EāApublic int GetHashCode()\bh̃I[oChs
@@ f[^o̒l̘ãnbVR[hƍ̃nbVR[h̔rI_aԂ
@ nbVR[hobjectNXGetHashCode()\bhœƗǂ
@F return (x + y).GetHashCode() ^ (x + y).GetHashCode();
 eLXgłEquals\bhGetHashCode()\bh̃I[oChKvƂ邪AȂĂȂ

~jKFWNXMapɂQ==ZqAQ!=Zq̃I[o[[h Map04.cs

EQ==Zq̃I[o[[h́A2W̋double^ŕԂ

쐬

//WNXMapɂQ+Zq̃I[o[[h Map02.cs
using System;
class Map {
  double x; //XWp̃f[^o 
  double y; //YWp̃f[^o
  public double X { //XWp̃vpeB
    get { return x; } set { x = value; }
  }
  public double Y { //YWp̃vpeB
    get { return y; } set { y = value; }
  }
  public Map() { //ftHgRXgN^
    x = 0.0;
    y = 0.0;
  }
  public Map(double x, double y) { //XWAYWw肷RXgN^
    this.x = x;
    this.y = y;
  }
  public override string ToString() { //W\p̃I[oCh
      return "(" + x + ", " + y + ")";
  }
  public static bool operator ==(Map a, Map b) { //Q==Zq̃I[o[[h
    return (a.x == b.x) && (a.y == b.y); //XW,YWΓ
  }
  public static bool operator !=(Map a, Map b) { //Q!=Zq̃I[o[[h
    return !(a == b); //Q==Zq̃I[o[[hĂ񂾌ʂ𔽓]
  }
}
class Map03 {
  public static void Main() {
    Map A = new Map(5, 2), B = new Map(-3, 4);
    Console.WriteLine("AF{0}", A);
    Console.WriteLine("BF{0}", B);
    Console.WriteLine("A == B{0}", A == B);
    Console.WriteLine("A != B{0}", A != B);
  }
}

eLXgю\Fp.363uWFlbNƂ́v

Q[JKF^C}[ Ȃ

e[}24 ^C}[

EʂIɕύXA莞ԂɉsꍇA^C}[p邱Ƃo
E^C}[́ASystem.Windows.Forms.TimerNX̃ftHgRXgN^Őł
ẼCX^X\bhTickCxgɁA^C}[ɌĂяoė~\bho^
Eo^ɂ́AEventHandlerfQ[gp
@F
@Timer t = new Timer();
@t.tick += new EventHandler(^C}[ɌĂяoė~\bh);
EāACX^XvpeBIntervalɁAԊu~bŎw肷
@Ft.Interval = 20;
EꂩACX^X\bhStart()ĂԂƂŃ^C}[삷
EȂA^C}[ɌĂяoė~\bh́A߂l^voidA^(object, EventArgs)Ƃ邱ƁE
@ ʏA\bhňp邱Ƃ͂Ȃ

e[}25 ľ`w蕶

EWriteLine\bhȂǂŎg{0}A{1}Acp`w蕶񉻂́A̐łg
EStringNX̐ÓI\bhFormatɁA`w蕶l⎮nāAҏWʂ̕𓾂邱Ƃł
EF string s = String.Format("`w蕶", l⎮, c);
EF string s = String.Format("{0}{1}{I", "VA", 3); //"VA3{I"𓾂

K21 ^C}[ɂXRAAbv

E500~bƂɃXRA1悤ɂ悤
E菇
@@ XRAp̕ϐ int score 0ŏĂ
@A XRA\ϐscorep悤ɕύX
@B ^C}[ĂяoPlay\bh쐬A̒scoreCNgAĕ`悷
@C ^C}[𐶐A500~bƂPlay\bhĂяo悤`āAJn
@D OnPaint\bhɂXRA̕\ɕϐscorep悤ɕύX(`w蕶𗘗p)
 ^C}[̐̓f[^o̒`ōs΂悢
 ^C}[̃Cxgo^ƃC^[o̐ݒ̓RXgN^ōs΂悢
 ^C}[Start́AʂvCʂɑJڂ鎞ɍsΗǂ
 ʂ̃`cL邪ẢKŉ

쐬

//K21 ^C}[ɂXRAAbv
using System; //tH[AvP[VɕK{
using System.Windows.Forms; //tH[AvP[VɕK{
using System.Drawing; //Imagep
class Program : Form { //FormNXp
    Image backb = Image.FromFile("backb.bmp"); //wi摜̓Ǎ
    Image enemy = Image.FromFile("enemy.gif"); //ACe摜̓Ǎ
    Image burn = Image.FromFile("burn.gif"); //ʗp摜̓Ǎ
    Pen mypen = new Pen(Color.Red, 2); //y𐶐(l͐ԁA2)
    Brush bred = new SolidBrush(Color.FromArgb(63, 255, 0, 0)); //uV𐶐(Ԃ̓F)
    Brush byel = new SolidBrush(Color.Yellow); //uV𐶐(F)
    Font f20 = new Font("CI", 20, FontStyle.Bold); //tHg𐶐(CI20P)
    Font f80 = new Font("CI", 80, FontStyle.Bold); //tHg𐶐(CI80P)
    int gamemode = 0; //0:X^[gʁA1:vC
    int score = 0; //yǉzXRA
    Timer timer = new Timer(); //yǉz^C}[𐶐
    void DrawCircle(PaintEventArgs e, Pen p, int x, int y, int r) { //yASWAaw肵ĉ~`
        e.Graphics.DrawEllipse(p, x - r, y - r, 2 * r, 2 * r); //~̕`Ă
    }
    protected override void OnPaint(PaintEventArgs e) { //Form̃\bhI[o[Ch
        base.OnPaint(e); //܂AFormNXɂ郁\bh̓e({ĕ`揈)s
        e.Graphics.DrawImage(backb, 0, 0); //wi摜(0,0)`
        if (gamemode == 0) { //X^[g
            e.Graphics.DrawString("GAME1", f80, byel, 100, 100); //^Cg̕`
            e.Graphics.DrawString("Hit Enter to Start", f20, byel, 200, 300); //bZ[W̕`
        } else if (gamemode == 1) { //vC
            e.Graphics.FillRectangle(bred, 78, 411, 485, 64); //GA𓧖ԂœhԂ
            e.Graphics.DrawRectangle(mypen, 78, 411, 485, 64); //GA̕`
            string s = String.Format("SCORE:{0:000,000}", score); //yǉzXRAҏW
            e.Graphics.DrawString(s, f20, byel, 400, 10); //XRA̕`
        }
    }
    void OnKeyDown(object o, KeyEventArgs e) { //L[{[hꂽɌĂ΂郁\bh
        if(e.KeyCode.ToString() == "Escape") { //EscL[ꂽ
            Close(); //tH[AvP[VI
        }
        if(gamemode == 0 && e.KeyCode.ToString() == "Return") { //X^[gʂEnterL[ꂽ
            gamemode = 1; //vCʂɐ؂ւ
            timer.Start(); //yǉz^C}[Jn
            Invalidate(); //ʍĕ`˗
        }
    }
    void Play(object o, EventArgs e) { //yȉǉz^C}[Ă΂郁\bh
        score++; //XRAAbv
        Invalidate(); //ʍĕ`˗
    }
    Program() { //RXgN^
        KeyDown += new KeyEventHandler(OnKeyDown); //L[{[hꂽɌĂ΂郁\bho^
        timer.Tick += new EventHandler(Play); //yǉz^C}[Ă΂郁\bho^
        timer.Interval = 500; //yǉz^C}[̊Ԋu
    }
    static void Main() { //public̎w͔C
        Program p = new Program(); //ptH[̃CX^X𐶐
        p.Width = 660; //CX^XWidthvpeBɕ
        p.Height = 520; //CX^XHeightvpeBɍ
        p.Text = "Game"; //CX^XTextvpeBɃtH[
        p.ControlBox = false; //ControlBox\ɂ
        p.FormBorderStyle = FormBorderStyle.Fixed3D; //tH[TCYύX֎~
        Application.Run(p); //CX^Xʂɏo
    }
}

e[}26 _uobt@O

EʂɓAvP[Vł́Aʂ̏̃^C~Ôɂ`N
Ehɂ́A摜QdA`I摜\p̉摜ɈCɍ]
E̎dg݂_uobt@OƂ
EC#.NETt[[N4.6ȍ~GDI+ł́isVisualStudioł́jASystem.Windows.Forms.FormNXDoubleBufferedvpeBtrueɂΗǂ

K22 _uobt@O̓

ERXgN^Ń_uobt@O𓱓悤

쐬

//K22 _uobt@O̓
using System; //tH[AvP[VɕK{
using System.Windows.Forms; //tH[AvP[VɕK{
using System.Drawing; //Imagep
class Program : Form { //FormNXp
    Image backb = Image.FromFile("backb.bmp"); //wi摜̓Ǎ
    Image enemy = Image.FromFile("enemy.gif"); //ACe摜̓Ǎ
    Image burn = Image.FromFile("burn.gif"); //ʗp摜̓Ǎ
    Pen mypen = new Pen(Color.Red, 2); //y𐶐(l͐ԁA2)
    Brush bred = new SolidBrush(Color.FromArgb(63, 255, 0, 0)); //uV𐶐(Ԃ̓F)
    Brush byel = new SolidBrush(Color.Yellow); //uV𐶐(F)
    Font f20 = new Font("CI", 20, FontStyle.Bold); //tHg𐶐(CI20P)
    Font f80 = new Font("CI", 80, FontStyle.Bold); //tHg𐶐(CI80P)
    int gamemode = 0; //0:X^[gʁA1:vC
    int score = 0; //XRA
    Timer timer = new Timer(); //^C}[𐶐
    void DrawCircle(PaintEventArgs e, Pen p, int x, int y, int r) { //yASWAaw肵ĉ~`
        e.Graphics.DrawEllipse(p, x - r, y - r, 2 * r, 2 * r); //~̕`Ă
    }
    protected override void OnPaint(PaintEventArgs e) { //Form̃\bhI[o[Ch
        base.OnPaint(e); //܂AFormNXɂ郁\bh̓e({ĕ`揈)s
        e.Graphics.DrawImage(backb, 0, 0); //wi摜(0,0)`
        if (gamemode == 0) { //X^[g
            e.Graphics.DrawString("GAME1", f80, byel, 100, 100); //^Cg̕`
            e.Graphics.DrawString("Hit Enter to Start", f20, byel, 200, 300); //bZ[W̕`
        } else if (gamemode == 1) { //vC
            e.Graphics.FillRectangle(bred, 78, 411, 485, 64); //GA𓧖ԂœhԂ
            e.Graphics.DrawRectangle(mypen, 78, 411, 485, 64); //GA̕`
            string s = String.Format("SCORE:{0:000,000}", score); //XRAҏW
            e.Graphics.DrawString(s, f20, byel, 400, 10); //XRA̕`
        }
    }
    void OnKeyDown(object o, KeyEventArgs e) { //L[{[hꂽɌĂ΂郁\bh
        if(e.KeyCode.ToString() == "Escape") { //EscL[ꂽ
            Close(); //tH[AvP[VI
        }
        if(gamemode == 0 && e.KeyCode.ToString() == "Return") { //X^[gʂEnterL[ꂽ
            gamemode = 1; //vCʂɐ؂ւ
            timer.Start(); //^C}[Jn
            Invalidate(); //ʍĕ`˗
        }
    }
    void Play(object o, EventArgs e) { //^C}[Ă΂郁\bh
        score++; //XRAAbv
        Invalidate(); //ʍĕ`˗
    }
    Program() { //RXgN^
        DoubleBuffered = true; //yǉz_uobt@O̓
        KeyDown += new KeyEventHandler(OnKeyDown); //L[{[hꂽɌĂ΂郁\bho^
        timer.Tick += new EventHandler(Play); //^C}[Ă΂郁\bho^
        timer.Interval = 500; //^C}[̊Ԋu
    }
    static void Main() { //public̎w͔C
        Program p = new Program(); //ptH[̃CX^X𐶐
        p.Width = 660; //CX^XWidthvpeBɕ
        p.Height = 520; //CX^XHeightvpeBɍ
        p.Text = "Game"; //CX^XTextvpeBɃtH[
        p.ControlBox = false; //ControlBox\ɂ
        p.FormBorderStyle = FormBorderStyle.Fixed3D; //tH[TCYύX֎~
        Application.Run(p); //CX^Xʂɏo
    }
}

oFK22 _uobt@O̓

Q[JK\Fwiʂ̃XN[AL[{[h̏Ԃm Ȃ
